package com.faya.green.dao.user;

import com.faya.green.model.User;
import com.faya.green.model.web.UserPostOrgWeb;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 用户 ：LX
 * 创建时间： 2018/7/10. 22:58
 * 地点：广州
 * 目的:
 * 结果：
 */
public interface UserDao {

    /**
     * 更新用户
     * @param user 用户
     */
    void updateUser(User user);

    /**
     * 添加用户
     * @param user 用户
     */
    void addUser(User user);

    /**
     * 根据主键查询用户
     * @param id 主键
     * @return 用户
     */
    @Select("select * from user where id = #{id, jdbcType=VARCHAR} and status!='2'")
    User findUserById(String id);

    /**
     * 根据用户邮箱 查询
     * @param email 邮箱
     * @return 用户
     */
    @Select("select * from user where email = #{email, jdbcType=VARCHAR} and status!='2'")
    User findUserByEmail(String email);

    /**
     * 根据 登录用户名 查询
     * @param logName 登录用户名
     * @return 用户
     */
    @Select("select * from user where logName = #{logName, jdbcType=VARCHAR} and status!='2'")
    User findUserByLogName(String logName);


    /**
     * 查找到这个岗位下的全部用户
     * @param postId 岗位 id
     * @return
     */
    @Select("select * from user u where u.id in (select p.userId from PostUser p where p.status != '2' and p.postId = #{postId,jdbcType=VARCHAR}) order by u.updateTime DESC")
    List<User> getAllUserByPostId(String postId);

    /**
     * 根据岗位ID查询这个岗位下的用户并分页，注意:对数据进行了处理，并非全部数据返回
     * @param postId 岗位id
     * @return
     */
    List<User> getUserByPostIdPageZH(String postId);

    /**
     * 根据主键删除用户
     * @param id 用户主键
     */
    @Delete("delete from user where id = #{id, jdbcType=VARCHAR} ")
    void delUserById(String id);


    /**
     * 根据用户id 查询出对应的岗位、机构等信息
     * @param uid 用户id
     * @return
     */
    @Select("select * from user_post_org where uid = #{uid, jdbcType=VARCHAR}")
    List<UserPostOrgWeb> getUserPostOrgWebByUid(String uid);

    /**
     * 根据用户id 查询出对应的岗位、机构等信息
     * @param ucreateUser 创建人用户ID
     * @return
     */
    @Select("select * from user_post_org where ucreateUser = #{ucreateUser, jdbcType=VARCHAR}")
    List<UserPostOrgWeb> getUserPostOrgWebByCreateUser(String ucreateUser);

}
